package vista;

import interfaces.IServicioProducto;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;

import dto.DTOMarca;
import excepciones.Excepcion;

public class ABMMarca extends Ventana
{

	private static final long serialVersionUID = 1L;
	private Accion accion;
	private int codigo;
	private JButton btn_Cancelar;
	private JButton btn_Guardar;
	private JTextField txt_Codigo;
	private JLabel lbl_Codigo;
	private JTextField txt_Nombre;
	private JLabel lbl_Nombre;
	
	public ABMMarca(Principal Parent, Accion accion, int codigo)
	{
		super(Parent);
		this.accion = accion;
		this.codigo = codigo;
		inicializar();
		cargarDatos();
	}
	
	private void inicializar()
	{
		getContentPane().setLayout(null);
		setSize(350, 135);
	
		// Elementos del formulario
		
		lbl_Codigo = new JLabel();
		getContentPane().add(lbl_Codigo);
		lbl_Codigo.setText("Codigo");
		lbl_Codigo.setFont(new java.awt.Font("Tahoma", 0, 10));
		lbl_Codigo.setBounds(14, 15, 63, 28);
	
		txt_Codigo = new JTextField();
		getContentPane().add(txt_Codigo);
		txt_Codigo.setBounds(84, 20, 245, 21);
		
		lbl_Nombre = new JLabel();
		getContentPane().add(lbl_Nombre);
		lbl_Nombre.setText("Nombre");
		lbl_Nombre.setFont(new java.awt.Font("Tahoma", 0, 10));
		lbl_Nombre.setBounds(14, 40, 63, 28);
	
		txt_Nombre = new JTextField();
		getContentPane().add(txt_Nombre);
		txt_Nombre.setBounds(84, 45, 245, 21);
		
		
		JSeparator jSeparator1 = new JSeparator();
		jSeparator1.setBounds(0, 70, 350, 14);
		getContentPane().add(jSeparator1);
		
        // Boton Guardar
		btn_Guardar = new JButton();
		getContentPane().add(btn_Guardar);
		btn_Guardar.setText("Guardar");
		btn_Guardar.setFont(new java.awt.Font("Tahoma", 0, 10));
		btn_Guardar.setBounds(172, 75, 77, 21);
		btn_Guardar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				guardar();
			}
		});
	
		// Boton Cancelar
		btn_Cancelar = new JButton();
		getContentPane().add(btn_Cancelar);
		btn_Cancelar.setText("Cancelar");
		btn_Cancelar.setFont(new java.awt.Font("Tahoma", 0, 10));
		btn_Cancelar.setBounds(258, 75, 77, 21);
		btn_Cancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				cerrar();
			}
		});
		
		// Seteo las visibilidades
		switch (accion)
		{
			case Nuevo:
				setTitle("Nueva Marca");
				txt_Codigo.setEditable(false);
				break;
			case Editar:
				setTitle("Editar Marca");
				txt_Codigo.setEditable(false);
				break;
			case Eliminar:
				setTitle("Eliminar Marca");
				txt_Codigo.setEditable(false);
				txt_Nombre.setEditable(false);
				break;
		}
	}

	private void cargarDatos()
	{
		try
		{
			if (codigo != Integer.MIN_VALUE)
			{
				DTOMarca entidad = parent.getServicioProducto().obtenerMarca(codigo);
				if (entidad != null){
					txt_Codigo.setText(Integer.toString(entidad.getCodigo()));
					txt_Nombre.setText(entidad.getNombre());
				}
			}

		}
		catch (Excepcion e)
		{
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
		catch (RemoteException e)
		{
			JOptionPane.showMessageDialog(null, "Se ha producido un error: " + e.getMessage());
		}
	}
	
	private void guardar()
	{
		try
		{
			IServicioProducto srvProducto = parent.getServicioProducto();
		
			switch (accion)
			{
				case Nuevo:
					srvProducto.altaMarca(txt_Nombre.getText());
					break;
				case Editar:
					srvProducto.modificarMarca(codigo, txt_Nombre.getText());
					break;
				case Eliminar:
					srvProducto.eliminarMarca(codigo);
					break;
			}
			updateObservers();
			cancelar();
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
	}
	
	public void cancelar()
	{
		super.cerrar();
	}
}
